import java.util.*;

public class notes {
	// tableau note soprano midi
	protected static int midisoprano[];
	// tableau note alto midi
	protected static int midialto[];
	// tableau note tenor midi
	protected static int miditenor[];
	// tableau note basse midi
	protected static int midibasse[];
	// tableau note sprano entier de 0 a 27
	protected static int entiersoprano[];
	// tableau note string tenor
	protected static String chainechartenor[];
	// tableau note string basse
	protected static String chainecharbasse[];
	// tableau note string alto
	protected static String chainecharalto[];

	// deux tableaux servant de point de comparaison pour conversion
	static int notesint[][] = new int[7][4];
	static int notesmidi[][] = new int[7][4];

	private static void notes() {
		int compteur = 0;

		notesmidi[0][0] = 36;
		notesmidi[1][0] = 38;
		notesmidi[2][0] = 40;
		notesmidi[3][0] = 41;
		notesmidi[4][0] = 43;
		notesmidi[5][0] = 45;
		notesmidi[6][0] = 47;

		for (int i = 1; i < 4; i++) {
			for (int j = 0; j < 7; j++) {

				notesmidi[j][i] = notesmidi[j][i - 1] + 12;
			}
		}

		for (int i = 0; i < 4; i++) {
			for (int j = 0; j < 7; j++) {

				notesint[j][i] = compteur;
				compteur++;
			}
		}
	}

	public static void NomNotes(int[] t, int i) {
		// note entier de 0 a 27 convertit en string

		String nomNote = "nom";
		for (int h = 0; h < t.length; h++) {
			if (t[h] == 0) {
				nomNote = "do1";
			}
			if (t[h] == 1) {
				nomNote = "re1";
			}
			if (t[h] == 2) {
				nomNote = "mi1";
			}
			if (t[h] == 3) {
				nomNote = "fa1";
			}
			if (t[h] == 4) {
				nomNote = "sol1";
			}
			if (t[h] == 5) {
				nomNote = "la1";
			}
			if (t[h] == 6) {
				nomNote = "si1";
			}
			if (t[h] == 7) {
				nomNote = "do2";
			}
			if (t[h] == 8) {
				nomNote = "re2";
			}
			if (t[h] == 9) {
				nomNote = "mi2";
			}
			if (t[h] == 10) {
				nomNote = "fa2";
			}
			if (t[h] == 11) {
				nomNote = "sol2";
			}
			if (t[h] == 12) {
				nomNote = "la2";
			}
			if (t[h] == 13) {
				nomNote = "si2";
			}
			if (t[h] == 14) {
				nomNote = "do3";
			}
			if (t[h] == 15) {
				nomNote = "re3";
			}
			if (t[h] == 16) {
				nomNote = "mi3";
			}
			if (t[h] == 17) {
				nomNote = "fa3";
			}
			if (t[h] == 18) {
				nomNote = "sol3";
			}
			if (t[h] == 19) {
				nomNote = "la3";
			}
			if (t[h] == 20) {
				nomNote = "si3";
			}
			if (t[h] == 21) {
				nomNote = "do4";
			}
			if (t[h] == 22) {
				nomNote = "re4";
			}
			if (t[h] == 23) {
				nomNote = "mi4";
			}
			if (t[h] == 24) {
				nomNote = "fa4";
			}
			if (t[h] == 25) {
				nomNote = "sol4";
			}
			if (t[h] == 26) {
				nomNote = "la4";
			}
			if (t[h] == 27) {
				nomNote = "si4";
			}

			switch (i) {
			case 0: {
				// remplissage du tab String
				chainecharalto[h] = nomNote;
				break;
			}
			case 1: {
				// remplissage du tab String
				chainechartenor[h] = nomNote;
				break;
			}
			case 2: {
				// remplissage du tab String
				chainecharbasse[h] = nomNote;
				break;
			}
			default: {
				System.out.println("erreur");
				break;
			}
			}
		}
		if (i == 0) {
			notes.IntNote(chainecharalto, 1);
		}
		if (i == 1) {
			notes.IntNote(chainechartenor, 2);
		}
		if (i == 2) {
			notes.IntNote(chainecharbasse, 3);
		}

	}

	// les notes sont converties au format entier et midi
	public static void IntNote(String[] s, int note) {
		// on initialise une seule fois les tableaux midi et entier soprano
		if (note == 0) {
			midisoprano = new int[split.chainecharsopra.length];
			entiersoprano = new int[split.chainecharsopra.length - 1];
		}
		notes();
		for (int i = 0; i < s.length - 1; i++) {
			int octave = Integer.parseInt(s[i].substring(s[i].length() - 1,
					s[i].length()));
			String nom = s[i].substring(0, s[i].length() - 1);
			int o = octave - 1;
			int n = 0;
			switch (nom) {
			case "do": {
				n = 0;
				break;
			}
			case "re": {
				n = 1;
				break;
			}
			case "mi": {
				n = 2;
				break;
			}
			case "fa": {
				n = 3;
				break;
			}
			case "sol": {
				n = 4;
				break;
			}
			case "la": {
				n = 5;
				break;
			}
			case "si": {
				n = 6;
				break;
			}
			default: {
				break;
			}

			}

			switch (note) {
			case 0: {
				if (octave != 3 && octave != 4) {
					System.err
							.println("octave different de 3 ou 4 dans le fichier .chant");
					System.exit(0);
					break;
				}
				// remplissage du tableaux format midi
				midisoprano[i] = notesmidi[n][o];
				// remplissage tableau d'entier de 0 a 27
				entiersoprano[i] = notesint[n][o];
				break;
			}
			case 1: {
				// remplissage du tableau midi alto
				midialto[i] = notesmidi[n][o];
				break;
			}
			case 2: {
				// remplissage du tableau midi tenor
				miditenor[i] = notesmidi[n][o];
				break;
			}
			case 3: {
				// remplissage du tableau midi basse
				midibasse[i] = notesmidi[n][o];
				break;
			}
			default: {
				System.out.println("erreur");
				break;
			}
			}

		}
	}

}